package com.liang.edu.info.manager.contorller;

import com.liang.edu.info.manager.domain.Student;
import com.liang.edu.info.manager.service.StudentService;

import java.util.Scanner;

public class StudentController {
    //创建学生服务把学生对象传递
    private StudentService student = new StudentService();
    //创建学生类
    private Student stu = new Student();
    Scanner sc = new Scanner(System.in);
    public void start() {

        addStudent:
        while (true) {
            //1、输出学生管理的功能
            System.out.println("--------欢迎来到 <学生> 管理系统--------");
            System.out.println("请输入您的选择: 1.添加学生  2.删除学生  3.修改学生  4.查看学生  5.退出");
            //2、对选择的功能进行判断
            String str = sc.next();
            switch (str) {
                case "1":
                    //添加学生
                    addStudent();
                    break;
                case "2":
                    //删除学生
                    delStudent();
                    break;
                case "3":
                    //修改学生
                    updateStudent();
                    break;
                case "4":
                    //查看学生
                    findAllStudent();
                    break;
                case "5":
                    //退出
                    break addStudent;
            }
        }
    }

    public void updateStudent() {
        //请输入您要修改的学生id
        //判断id是否存在，不存在循环输入
        String id = idExits();
        //填写新的学生信息
        //封装成学生对象
        Student stu = obStudent(id);
        //传给serviceStudent进行服务
        student.updateStudent(id,stu);
        System.out.println("信息更新成功");

    }

    //删除学生
    public void delStudent() {
        String id = idExits();
        //删除学生
        student.delStudent(id);
        System.out.println("删除成功");


    }

    //查看学生
    public void findAllStudent() {

        //调用studetservice中的findallstudent方法判断数组数组中是否存在数据
        Student[] stu = student.findAllStudent();
        //打印数组中的数据
        //判断数组是否为空是的话，提示查无信息
        if (stu == null) {
            System.out.println("还没有学生信息，请您添加学生信息！");
        } else {
            System.out.println("ID\t\t\t姓名\t\t年龄\t\t生日");
            for (int i = 0; i < stu.length; i++) {
                if (stu[i] != null) {
                    System.out.println(stu[i].getId() + "\t" + stu[i].getName() + "\t\t" + stu[i].getAge() + "\t" + stu[i].getBirthday());
                }
            }
        }


    }

    //添加学生
    public void addStudent() {

        //输入信息
        String id;
        while (true) {
            System.out.println("请输入学生的id");
            id = sc.next();
            //对学生id进行判断调用服务层
            boolean isExits = student.isExits(id);
            if(isExits){
                break;
            }else{
                System.out.println("您输入的学生id已经存在，请重新输入！");
            }
        }
        //封装学生对象
        obStudent(id);


        boolean isSuccess = student.addStudent(stu);
        if(isSuccess){
            System.out.println("添加成功");
        }else{
            System.out.println("添加失败");

        }
    }

    //循环输入id
    public String idExits(){
        String id;
        while (true) {
            //输入学生的id
            System.out.println("请输入学生的id！");
            id = sc.next();
            //服务层的方法对id进行判断
            //返回判断值，打印是否删除成功
            boolean result = student.isExits(id);
            if (result) {
                System.out.println("你输入的id不正确请重新输入");
            }else{
                //退出循环
                return id;
            }
        }
    }

    //添加学生对象
    public Student obStudent(String id) {
        System.out.println("请输入学生的姓名");
        String name = sc.next();
        System.out.println("请输入学生的年龄");
        String age = sc.next();
        System.out.println("请输入学生的生日");
        String birthday = sc.next();
        //把信息封装进学生类
        stu.setId(id);
        stu.setName(name);
        stu.setAge(age);
        stu.setBirthday(birthday);

        //返回学生对象
        return stu;
    }

}
